package org.domain.sigerec.entity;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.domain.sigerec.enums.TipoCartaoEnum;
import org.domain.sigerec.enums.TipoTelefoneEnum;
import org.hibernate.validator.NotNull;
import org.hibernate.validator.Pattern;

@Entity
public class Cartao implements Serializable {
	
	private static final long serialVersionUID = 3520024495715026038L;
	private Long id;
	private Long numero;
	private Long digVerificacao;
	private Date dataVencimento;
	private Cliente cliente;
	private TipoCartaoEnum tipoCartao;
	
	public Cartao() {
		
	}
		
	@Id @GeneratedValue
	public Long getId() {
	     return id;
	}

	public void setId(Long id) {
	     this.id = id;
	}

	public Long getNumero() {
		return numero;
	}

	public void setNumero(Long numero) {
		this.numero = numero;
	}

	public Long getDigVerificacao() {
		return digVerificacao;
	}

	public void setDigVerificacao(Long digVerificacao) {
		this.digVerificacao = digVerificacao;
	}

	@Temporal(TemporalType.DATE)
	@Pattern(regex="yyyy/MM")
	public Date getDataVencimento() {
		return dataVencimento;
	}

	public void setDataVencimento(Date dataVencimento) {
		this.dataVencimento = dataVencimento;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	@ManyToOne(cascade=CascadeType.ALL)
	@NotNull
	@JoinColumn(name = "cliente_id")
	public Cliente getCliente() {
		return cliente;
	}
	
	public TipoCartaoEnum getTipoCartao() {
		return tipoCartao;
	}

	public void setTipoCartao(TipoCartaoEnum tipoCartao) {
		this.tipoCartao = tipoCartao;
	}
	
}
